import axios from 'axios'
import url from 'common/js/http'

let base = url
// let user = sessionStorage.getItem('user')
function cleanArray (actual) {
  const newArray = []
  for (let i = 0; i < actual.length; i++) {
    if (actual[i]) {
      newArray.push(actual[i])
    }
  }
  // let href = window.location.href
  // if (!user) {
  //   newArray.push(JSON.parse(user))
  //   window.location.href = href.split('/')[0] + '/login'
  // }
  return newArray
}
// 将一个对象转成QueryString
function toQueryString (obj) {
  if (!obj) {
    return ''
  }
  return cleanArray(
    Object.keys(obj).map(key => {
      if (obj[key] === undefined) return ''
      return encodeURIComponent(key) + '=' + encodeURIComponent(obj[key])
    })
  ).join('&')
}

function initialAxios () {
  axios.defaults.headers['Authorization'] = 'Bearer ' + localStorage.getItem('token')
}

function getData (method, url, params) {
  initialAxios()
  return axios[method](url, params).then((res) => {
    if (res.data.code === 10012) {
      window.location.href = window.location.origin + '/signIn'
    } else {
      return Promise.resolve(res)
    }
  })
}
/**
 * 1.登录接口
 * 传递参数：userName passWord
 * 传递方法：post，类型：string
 */
// export const requestLogin = (username, pwd) => { return axios.post(`${base}/login`, {userName: username, passWord: pwd}).then(res => res.data) }

/**
 * 2.支持的交易对接口
 * 主流币
 */
export const majorSymbolList = params => { return getData('get', `${base}/robot/majorSymbolList?${toQueryString(params)}`) }

/**
 * 支持的交易对接口
 * 小币种
 */
export const selfSymbolList = params => { return getData('get', `${base}/robot/selfSymbolList?${toQueryString(params)}`) }

/**
 * 参数：site(可选)
 * 3.已绑定机器人交易对接口
 */
export const addedSymbolList = params => { return getData('get', `${base}/robot/addedSymbolList?${toQueryString(params)}`) }

/**
 * 4.已绑定机器人交易对详情接口
 * 传递参数：交易对 ,例如（symbol:“ETH_CNT"）
 */
export const symbolDetail = params => { return getData('get', `${base}/robot/symbolDetail?${toQueryString(params)}`) }

/**
 * 6.添加机器人接口
 * 主流币
 * 传递参数：selfSecretKey, selfApiKey, huobiSecretKey, huobiAccessKeyId, inspectTime, amountMultiple,
 * priceAdjustRate, bidsPriceAdjust, asksPriceAdjust, tradeLimitPerMin, RetainRecordsNum, mySymbol,huobiSymbol
 */
export const addRobot = params => { return getData('post', `${base}/robot/add`, params) }

/**
 * 6.修改机器人接口
 * 主流币
 * 传递参数：selfSecretKey, selfApiKey, huobiSecretKey, huobiAccessKeyId, inspectTime, amountMultiple,
 * priceAdjustRate, bidsPriceAdjust, asksPriceAdjust, tradeLimitPerMin, RetainRecordsNum, mySymbol,huobiSymbol
 */
export const modifyRobot = params => { return getData('post', `${base}/robot/modify`, params) }

/**
 * 添加机器人接口
 * 小币种
 * 传递参数：
 */
export const addSecRobot = params => { return getData('post', `${base}/robot/addSecRobot`, params) }

/**
 * 7.机器人列表接口
 */
export const robotList = params => { return getData('get', `${base}/robot/list?${toQueryString(params)}`) }

/**
 * 8.机器人详情接口
 * 传递参数：robotId  type
 * 类型 string
 */
export const robotDetail = params => { return getData('get', `${base}/robot/detail?${toQueryString(params)}`) }

/**
 * 8.机器人启动接口
 * 传递参数：robotId  type
 * 类型 string
 */
export const robotStart = params => { return getData('get', `${base}/robot/start?${toQueryString(params)}`) }

/**
 * 8.机器人关闭接口
 * 传递参数：robotId  type
 * 类型 string
 */
export const robotStop = params => { return getData('get', `${base}/robot/stop?${toQueryString(params)}`) }

/**
 * 8.机器人删除接口
 * 传递参数：robotId  type
 * 类型 string
 */
export const robotDelete = params => { return getData('get', `${base}/robot/delete?${toQueryString(params)}`) }

/**
 * 8.机器人扯单接口
 * 传递参数：robotId  type
 * 类型 string
 */
export const robotOrderCancel = params => { return getData('get', `${base}/robot/orderCancel?${toQueryString(params)}`) }

/**
 * 8.机器人资产详情接口
 * 传递参数：robotId  type
 * 类型 string
 */
export const robotAssets = params => { return getData('get', `${base}/robot/assets?${toQueryString(params)}`) }

/**
 * 8.机器人资产快照接口
 * 传递参数：robotId  type
 * 类型 string
 */
export const robotSnapShoot = params => { return getData('get', `${base}/robot/assetsSnapShoot?${toQueryString(params)}`) }

/**
 * 8.本站交易历史接口
 * 传递参数：r symbol pageNum startTime endTime
 * 类型 string
 */
export const SelfRecode = params => { return getData('get', `${base}/order/finished?${toQueryString(params)}`) }

/**
 * 8.对冲执行历史接口
 * 传递参数：symbol pageNum startTime endTime
 * 类型 string
 */
export const HuobiRecode = params => { return getData('get', `${base}/huobiorder/finished?${toQueryString(params)}`) }

/**
 * 模板列表
 * 传递参数：
 * 类型
 */
export const ModelList = params => { return getData('get', `${base}/robot/modelList?${toQueryString(params)}`) }

/**
* 获取K线数据
* 传递参数：period（时间间隔，5，15） symbol（交易对） size（获取数量） startTime endTime
* 类型 string
*/
export const KLineData = params => { return getData('get', `${base}/robot/huobiKlineData?${toQueryString(params)}`) }

/**
 * 生成模板
 * 传递参数：code message data
 * 类型 string
 */
export const SetKLineModel = params => { return getData('get', `${base}/robot/setKlineModel?${toQueryString(params)}`) }
/**
 * 模板详情
 * 传递参数：modelId
 * 类型 string
 */
export const ModelDetail = params => { return getData('get', `${base}/robot/modelDetail?${toQueryString(params)}`) }

/**
 * 模板详情
 * 传递参数：modelId
 * 类型 string
 */
export const ModelDelete = params => { return getData('get', `${base}/robot/deleteModel?${toQueryString(params)}`) }

/**
* 保存模板
 * 传递参数： data
* 类型 string
*/
export const SaveKlineModel = params => { return getData('post', `${base}/robot/saveKlineModel`, params) }

/**
 * 编辑模板
 * 传递参数：data
 * 类型 string
 */
export const ModifyModel = params => { return getData('post', `${base}/robot/modifyModel`, params) }

/**
 * 修改模板名称
 * 传递参数：modelId
 * 类型 modelName
 */
export const Rename = params => { return getData('get', `${base}/robot/rename?${toQueryString(params)}`) }

/**
 * 生成机器人数据
 * 传递参数：startTime basePrice（起始价格） depth（深度） frequency（报价频率） amountLow（报价数量最低） amountHigh（报价数量最高） modelId（模板编号） period（时间间隔）
 * 类型 string
 */
export const SetRobotData = params => { return getData('get', `${base}/robot/setPreRobotData?${toQueryString(params)}`) }

/**
 * 生成机器人数据
 * 传递参数：startTime basePrice（起始价格） depth（深度） frequency（报价频率） amountLow（报价数量最低） amountHigh（报价数量最高） modelId（模板编号） period（时间间隔）
 * 类型 string
 */
export const SetNewRobotData = params => { return getData('get', `${base}/robot/setNewRobotData?${toQueryString(params)}`) }

/**
 * 修改模板名称
 * 传递参数：modelId
 * 类型 modelName
 */
export const SetLang = params => { return getData('get', `${base}/robot/language?${toQueryString(params)}`) }

/**
 * 取消订阅
 * 传递参数：symbole
 * 类型 string
 */
export const CancelSub = params => { return getData('get', `${base}/cancelSub?${toQueryString(params)}`) }

/**
 * 损益统计
 * 传递参数：startTIme endTime
 * 类型 string
 */
export const plCount = params => { return getData('get', `${base}/robot/plCount?${toQueryString(params)}`) }

/**
 * 获取策略机器人支持的币对
 * 传递参数：--
 * 类型 --
 */
export const strategySymbolList = () => { return getData('get', `${base}/robot/strategySymbolList`) }

/**
 * 获取策略机器人支持的参数
 * 传递参数：symbol
 * 类型 string
 */
export const strategyRobotParam = (params) => { return getData('get', `${base}/robot/strategyRobotParam?${toQueryString(params)}`) }

/**
 * 获取策略机器人列表
 * 传递参数：--
 * 类型 --
 */
export const strategyRobotList = () => { return getData('get', `${base}/robot/strategyRobotList`) }

/**
 * 添加策略机器人
 * 传递参数：data
 * 类型 string
 */
export const addStrategyRobot = params => { return getData('post', `${base}/robot/addStrategyRobot`, params) }

/**
 * 获取对冲站点列表
 * 传递参数：--
 * 类型 --
 */
export const hedgingSiteList = () => { return getData('get', `${base}/robot/hedgingSiteList`) }

/**
 * 获取对冲交易对列表
 * 传递参数：site
 * 类型 string
 */
export const hedgingSymbolList = (params) => { return getData('get', `${base}/robot/hedgingSymbolList?${toQueryString(params)}`) }

/**
 * 获取收益变动统计列表
 * 传递参数：startTime endTime
 * 类型 string
 */
export const autoCount = (params) => { return getData('get', `${base}/robot/autoCount?${toQueryString(params)}`) }

/**
 * 余额统计
 * 传递参数：time
 * 类型 string
 */
export const balenceStat = (params) => { return getData('get', `${base}/robot/asset?${toQueryString(params)}`) }

/**
 * 获取收益变动统计列表
 * 传递参数：time
 * 类型 string
 */
export const principalAssets = () => { return getData('get', `${base}/robot/principal/assetList`) }

/**
 * 审计管理-资金调整
 * 传递参数：time
 * 类型 string
 */
export const principal = (params) => { return getData('get', `${base}/robot/principal?${toQueryString(params)}`) }

/**
 * 调整记录
 */
export const adjustRecords = () => { return getData('get', `${base}/robot/principal/adjustRecords`) }
